// 定义握手协议版本
#[derive(PartialEq, Eq)]
pub enum SchemaVersion {
    Schema0,
    Schema1,
    Unknown,
}

//定义客户端握手状态
#[derive(PartialEq, Eq)]
pub enum ClientHandshakeState {
    // 写入 C0 和 C1
    WriteC0C1,
    // 读取 S0, S1 和 S2
    ReadS0S1S2,
    // 写入 C2
    WriteC2,
    // 握手完成
    Finish,
}

// 定义服务器握手状态
#[derive(Copy, Clone)]
pub enum ServerHandshakeState {
    // 读取 C0 和 C1
    ReadC0C1,
    // 写入 S0, S1 和 S2
    WriteS0S1S2,
    // 读取 C2
    ReadC2,
    // 握手完成
    Finish,
}

// RTMP 协议的版本号
pub const RTMP_VERSION: usize = 3;

// RTMP 握手协议中 C1、C2、S1、S2 数据块的大小
pub const RTMP_HANDSHAKE_SIZE: usize = 1536;

// 服务器版本号（4 字节）
pub const RTMP_SERVER_VERSION: [u8; 4] = [0x0D, 0x0E, 0x0A, 0x0D];

// 客户端版本号（4字节）
pub const RTMP_CLIENT_VERSION: [u8; 4] = [0x0C, 0x00, 0x0D, 0x0E];

// 摘要的长度（32 字节）
pub const RTMP_DIGEST_LENGTH: usize = 32;

// 服务器密钥的前半部分（用于生成摘要）
pub const RTMP_SERVER_KEY_FIRST_HALF: &str = "Genuine Adobe Flash Media Server 001";

// 客户端密钥的前半部分（用于生成摘要）
pub const RTMP_CLIENT_KEY_FIRST_HALF: &str = "Genuine Adobe Flash Player 001";

// 服务器密钥（68 字节）
pub const RTMP_SERVER_KEY: [u8; 68] = [
    0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x46, 0x6c,
    0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
    0x20, 0x30, 0x30, 0x31, // "Genuine Adobe Flash Media Server 001"
    0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, 0xd1, 0x02, 0x9e, 0x7e, 0x57,
    0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, 0x6f, 0xab, 0x93, 0xb8, 0xe6, 0x36, 0xcf, 0xeb, 0x31, 0xae,
]; // 68 字节的服务器密钥
